package mastermind.gui.controls;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;

/**
 * Diese Klasse stellt einen Label im Mastermind Design dar
 */
public class LabelUI extends Composite
{
	private String	_text	= "";
	private int		_align;

	/**
	 * Erstellt ein neues LabelUI Objekt
	 * 
	 * @param parent
	 *            Eltern-Objekt, auf das das LabelUI Objekt plaziert wird
	 * @param style
	 *            Zus&auml;zliche Style Informationen
	 */
	public LabelUI(Composite parent, int style)
	{
		super(parent, style);

		this.addPaintListener(new PaintListener() {

			@Override
			public void paintControl(PaintEvent e)
			{
				e.gc.setAntialias(SWT.ON);

				Point txtSize = e.gc.textExtent(_text);
				Point txtPos = new Point(0, 0);

				switch (_align)
				{
				case SWT.RIGHT:
					txtPos.x = getBounds().width - txtSize.x - 1;
					break;
				case SWT.LEFT:
					txtPos.x = 0;
					break;
				case SWT.CENTER:
					txtPos.x = (getBounds().width - txtSize.x) / 2 - 1;
					break;

				default:
					break;
				}
				txtPos.y = (getBounds().height - txtSize.y) / 2 - 1;

				e.gc.setForeground(new Color(Display.getDefault(), new RGB(200, 200, 200)));
				e.gc.drawText(_text, txtPos.x + 1, txtPos.y + 1, true);

				e.gc.setForeground(getForeground());
				e.gc.drawText(_text, txtPos.x, txtPos.y, true);
			}
		});
	}

	/**
	 * Legt den anzuzeigenden Text fest
	 * 
	 * @param text
	 *            Text der angezeigt werden soll
	 */
	public void setText(String text)
	{
		this._text = text;
	}

	/**
	 * Setzt die Ausrichtung des Textes
	 * 
	 * @param align
	 *            SWT.LEFT oder SWT.CENTER oder SWT.RIGHT
	 */
	public void setAlignment(int align)
	{
		this._align = align;

	}
}
